package com.yu.dv.strategy;

import java.util.Map;

/**
 * 策略工厂接口
 */
public interface StrategyFactory<T> {

    /**
     * 获取策略
     */
    T getStrategy(String key);

    /**
     * 获取所有策略
     */
    Map<String, T> getAllStrategies();

    /**
     * 注册策略
     */
    void registerStrategy(String key, T strategy);

    /**
     * 注销策略
     */
    void unregisterStrategy(String key);

    /**
     * 获取工厂名称
     */
    String getFactoryName();
}
